<?php
namespace Admin\Controller;
use Think\Controller;
use Think\Crypt;
class BaseController extends Controller{
    
     function __construct(){
       //echo '这是构造函数';
        parent::__construct();
        $result=$this->checkLogin();
       // print_r($result);die;
        if(!$result){ //如果没有登录就跳到登录页面，前提是不在登录页面
            if(CONTROLLER_NAME!=='Login'){
                $this->redirect('login/index');
            }          
        }else {
            if(CONTROLLER_NAME=='Login' && ACTION_NAME=='index'){
            $this->redirect('index/index' );
        }
    }
    
        $this->checkLevel();  //权限调用
    } 
    //判断有没有登录 
    protected function checkLogin(){
        if(empty($_SESSION['username'])){

            //session中没有username
            if(!empty($_COOKIE['_token_'])){
                //cookie中有_token_,用户有记住自己
                $token=cookie('_token_');//从cookie中获取
                $username=Crypt::decrypt($token['u'], 'username');//将保存的用户名和密码解密
                $password=Crypt::decrypt($token['p'], 'password');
                //将用户名和密码进行对比
                $row=M('users')->where(array('username'=>$username,'password'=>$password))->find();
                if($row){
                    //cookie中的值是正确的，用户 之前有选记住我
                    session('username',$username);
                    return true;
                }else{
                    //cookie中的值是不正确的
                    cookie('_token_',null);
                }
            }
            return false;
        }else {
            return true;
        }
        
    }
    //验证权限
    function checkLevel(){
        //echo $_SESSION['gid'];
        $level=M('group')->where(array('id'=>$_SESSION['gid']))->getField('level');
        //获取当前模板 控制器 操作 并拼接成字符串
        $url=MODULE_NAME.'/'.CONTROLLER_NAME.'/'.ACTION_NAME;
       // 通过字符串查找当前操作ID
        $aid=M('action')->where(array('url'=>strtolower($url)))->getField('id');
        
       // echo $aid;
       if($aid){ //如果没有找到操作表中的ID
        if(!in_array($aid,explode(',' , $level))){
            $this->error('您没有访问此页面的权限，请于管理员联系',U('index/index'),5);
        }
    }
    }


    /**
     * 获取分类
     */
    public function getCategory($pid=0,$category=array(),$k=0){
      
         $dingji =M("category")->where(array("pid"=>$pid))->select();
       
         foreach($dingji as $key=>$value){
             $str ="<span style='color:red'>";
             for($i=0;$i<$k;$i++){
                 $str.="|--";
             }
             $str.="</span>";
              $value["title"] = $str.$value["title"];
              $category[]= $value;

              // $zi = M("category")->where(array("pid"=>$value["id"]))->select(); //二级分类

              // foreach($zi as $key1=>$value1){
              //     $category[]=$value1;

              //     $sanji = M("category")->where(array("pid"=>$value1["id"]))->select();

              // }

              $category = $this->getCategory($value["id"],$category,$k+1);
          }
             
             return $category;
    }

}